package com.bbx.taxi.client.Util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.bbx.taxi.client.Bean.Value;

public class DateFormat {
	/**
	 * 将2015-08-03 12:00:00转换为没有秒的2015-08-03 12:00,通常用于显示在界面上的，界面上统一没有秒
	 */
	public static String onDateRemove_ss(String time) {
		if(time==null)return "";
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
			return time;
		}
		return sdf.format(date);
	}
	/**
	 * 将2015-08-03 12:00:00转换为没有秒的2015-08-03 ,通常用于显示在界面上的，界面上统一没有秒
	 */
	public static String onDateRemove_mmss(String time) {
		if(time==null)return "";
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
		}
		return sdf.format(date);
	}
	/**
	 * 将2015-08-03 12:00:00转换为没有秒的8月3日 12:00 ,通常用于显示在界面上的，界面上统一没有秒
	 */
	public static String onCNDateRemove_yyss(String time) {
		if(time==null)return "";
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
			return "";
		}
		return (date.getMonth()+1)+"月"+date.getDate()+"日"+date.getHours()+":"+date.getMinutes();
	}
	/**
	 * 将将时间戳转换为8月3日 
	 */
	public static String onCNTimeRemove_mmdd(long time) {
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(time);
		if(cal.get(Calendar.YEAR)==1970){
			cal.setTimeInMillis(time*1000);
		}
		String str_hour="";
		String str_minute="";
		int hour=cal.get(Calendar.HOUR_OF_DAY);
		if(hour==0){str_hour="00";}else{str_hour=hour+"";}
		int minute=cal.get(Calendar.MINUTE);
		if(minute==0){str_minute="00";}else{str_minute=minute+"";}
		return (getDateFormat(cal.get(Calendar.MONTH)+1))+"月"+getDateFormat(cal.get(Calendar.DAY_OF_MONTH))+"日"+str_hour+":"+str_minute+"";
	}
	/**
	 * 将将时间戳转换为2015年8月3日  12:30:00。
	 */
	public static String onCNTime(long time) {
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(time);
		if(cal.get(Calendar.YEAR)==1970){
			cal.setTimeInMillis(time*1000);
		}
		return cal.get(Calendar.YEAR)+"年"+getDateFormat((cal.get(Calendar.MONTH)+1))+"月"+getDateFormat(cal.get(Calendar.DAY_OF_MONTH))+"日"+getDateFormat(cal.get(Calendar.HOUR_OF_DAY))
				+":"+getDateFormat(cal.get(Calendar.MINUTE));
	}
	/**
	 * 将2015-08-03 12:00转换为有秒的2015-08-03 12:00:00，通常用于上传到服务器的，服务器要有秒
	 */
	public static String onDateAdd_ss(String time) {
		if(time.equals(Value.now_time)){
			return getCurrentTime();
		}
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
			SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm");
			try {
				date = sdf2.parse(time);
			} catch (ParseException e1) {
			      return time;
			}
		}
		return sdf.format(date);
	}
	/**
	 * 转换为时间戳
	 */
	public static long onDate_Long(String time) {
		if(time.equals("现在出发")){
			return new Date().getTime();
		}
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
		}
		return date.getTime();
	}
	/**
	 * 获取当前时间
	 */
	public static String getCurrentTime(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		return sdf.format(new Date());// new Date()为获取当前系统时间
	}
	/**
	 *转换时间戳："yyyy-MM-dd HH:mm:ss"
	 */
	public static String getTime(long time){
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(time);
		if(cal.get(Calendar.YEAR)==1970){
			cal.setTimeInMillis(time*1000);
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		return sdf.format(cal.getTime());// new Date()为获取当前系统时间
	}
	/**
	 * 转换时间戳："yyyy-MM-dd HH:mm"
	 */
	public static String getTime2(long time){
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(time);
		if(cal.get(Calendar.YEAR)==1970){
			cal.setTimeInMillis(time*1000);
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//设置日期格式
		return sdf.format(cal.getTime());// new Date()为获取当前系统时间
	}
	/**
	 * 计算时间
	 */
	public static long getTime(){
		return System.currentTimeMillis();
	}
	/**
	 * 获取时间相差，如，几分钟前，几小时前，限制12小时，超过则显示月份，不显示年
	 */
	public static String getTimeDifference(String time){
		if(time==null)return "";
		Date currentDate = new Date();
		Date date = null;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			date = sdf.parse(time);
		} catch (ParseException e) {
			SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm");
			try {
				date = sdf2.parse(time);
			} catch (ParseException e1) {
			      return time;
			}
		}
		long diffTime=currentDate.getTime()-date.getTime();
		if(diffTime<=12*60*60*1000){//几小时前
			if(diffTime<=12*60*60*1000&&diffTime>=1*60*60*1000){
				long diff_time = diffTime/(1*60*60*1000);
				if(diff_time<0){
					diff_time=0;
				}
				return diff_time+"小时前";
			}
			else if(diffTime<1*60*60*1000&&diffTime>=1*60*1000){
				 long diff_time = diffTime/(1*60*1000);
					if(diff_time<0){
						diff_time=0;
					}
				return diff_time+"分钟前";
			}
			else{
				 long diff_time = diffTime/(1000);
				if(diff_time<0){
					diff_time=0;
				}
				return diff_time+"秒前";
			}
		}
		else{
			//去掉年份
			Calendar cal = Calendar.getInstance();
			cal.setTime(date);
			return (cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.DAY_OF_MONTH)+" "+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+"";
		}
	}
	/**
	 * 时间格式化成00
	 */
	public static String getDateFormat(int i){
		 java.text.DecimalFormat df=new java.text.DecimalFormat("00");//保留2位小数
		 return df.format(i);
	}
}
